#include <msp430.h> 
#include "init.h"


/*
 * main.c
 */
__time time;
__statMsg stMess = {NONE, NONE, 0, 255};
__seq seq = {0, 1, 1, 20, 255};
__timeON TOD[20];


extern volatile unsigned char endMess;
extern volatile unsigned int tempo1S;

void main(void) {
	int i;
	unsigned char flag;
	char * flashBankPtr  = (char *) 0x1C400L;

    WDTCTL = WDTPW | WDTHOLD;	// Stop watchdog timer

    setDCO_XTAL(2457600);
    initPort();
    initTIMER(32768, 1000);
    initRTC();
    initUART1(19200, 2457600);
    initUART0(19200, 2457600);
    __bis_SR_register(GIE);
    flag = 0;
    /// messaggio di benvenuto
    printf("\n\rSistema controllo distribuzione energia.\n\r");
    printf("Scrivi help e batti invio per indicazioni comandi\r\n");
    if(loadFromFlash(&stMess, &seq) == VALID){
    	while(P2IN & BIT1){
    		P1OUT ^= 1;
    		for(i = 30000; i > 0; i--);
    	}
    	/// spento il led rosso
    	P1OUT &= 0xFE;
    	tempo1S = 0;
    	flag = 1;
    	for(i = 30000; i > 0; i--);
    	for(i = 30000; i > 0; i--);
    }
    while(1){
    	/// controlla se e' arrivato un nuovo messaggio
    	if(endMess){
    		parseMessage(&stMess, &seq);
    		if (stMess.stato == 0) {
    			/// il messaggio e' valido e carico la struttura per l'esecuzione delle operazioni
    			seq.stato = 0;
    			seq.time = stMess.dato;
    			seq.line = seq.stLine;
    		}
    		endMess = 0;
    	}
    	/// controllo del comando da eseguire
    	eseguiComando(&stMess, &seq, &flag);
    }

//    saveToBankFlash(&stMess, &seq, flashBankPtr);
//    erase_Seg(flashBankPtr);
//    while(1);
}




